<?php
session_start();
include('includes/config.php');
include('includes/fonctions.php');
$messageErrMail = 'Page : oublie-pass.php<br />';
$msgErr = '';

//on récupère les info du form
if (isset($_POST['envoyer'])) {
    //on va tester que l'on a bien les deux infos pseudo et password
    if (isset($_POST['pseudo']) && isset($_POST['mail']) && !empty($_POST['pseudo']) && !empty($_POST['mail']) && preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#is', $_POST['mail'])) {
        //on va sécuriser les variables pour la suite
        $pseudo = secure($_POST['pseudo']);
        $mail = secure($_POST['mail']);

        //on récupère l'id, le pseudo et le password en base
        $connection = connexionBdd();
        $select = $connection->prepare('SELECT `membre_id`, `membre_pseudo`, `membre_mail`, `membre_banni` FROM `membres` WHERE `membre_pseudo` = :pseudo');
        $select->setFetchMode(PDO::FETCH_OBJ);
        $select->bindParam(':pseudo', $pseudo, PDO::PARAM_STR);
        $select->execute();
        $countSelect = $select->rowCount();
        $enregistrement = $select->fetch();
        $select->closeCursor();

        if ($countSelect == 1) {
            //on va tester que le compte est validé, sinon on prend le temps de l'indiquer au client
            if ($enregistrement->membre_banni < 1) {
                if ($mail == $enregistrement->membre_mail) {
                    //on génère le nouveau password
                    $password = getCodeValidation(8);
                    //On insert en bdd le nouveau password
                    $connection = connexionBdd();
                    $updatePassword = $connection->prepare('UPDATE `membres` SET `membre_mdp` = :password WHERE `membre_id` = :id');
                    $updatePassword->bindValue(':password', sha1($password));
                    $updatePassword->bindValue(':id', $enregistrement->membre_id);
                    // On exécute
                    try {
                        $updatePassword->execute();
                        $updatePassword->closeCursor();
                    } catch (Exception $e) {
                        $msgErr = '<div class="error">Une erreur technique est venue perturbée le génération d\'un nouveau mot de passe. Notre équipe technique vient d\en être informée. Merci de renouveler votre opération ultérieurement.</div>';
                        $messageErrMail .= $e->getMessage();
                        error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
                    }

                    //on envoie un mail avec le nouveau password
                    $sujetMail = '[' . $nomSite . '] Nouveau mot de passe';
                    //=====Déclaration des messages au format texte et au format HTML.
                    $entete = "MIME-Version: 1.0\r\n";
                    $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
                    $entete .= "To: $mail";
                    $entete .= "From:$mailSite";
                    $entete .= "Reply-To: $mailSite \n"; // Adresse de retour le demandeur


                    $message_html = '<html><head></head><body>';
                    $message_html .= 'Bonjour ' . $pseudo . ',<br />';
                    $message_html .= 'nous venons de générer votre nouveau mot de passe pour le site ' . $nomSite . '<br /><br />';

                    $message_html .= 'Voici un rappel de vos codes d\'accès :<br />';
                    $message_html .= '<strong>Pseudo</strong> : ' . $pseudo . '<br />';
                    $message_html .= '<strong>Password</strong> : ' . $password . '<br /><br />';

                    $message_html .= 'N\'oubliez pas de conserver cet email, il pourra vous être utile.<br /><br />';

                    $message_html .= 'Pour toute autre précision, information, intervention, appréciation, suggestion, nous restons à votre écoute. N\'hésitez pas à nous contacter directement par le biais du site.<br />';
                    $message_html .= 'Nous vous remercions de la confiance et de l\'intérêt que vous nous portez.<br /><br />';
                    $message_html .= 'Cordialement,<br />L\'équipe ' . $nomSite;

                    $message_html .= '</body></html>';

                    //=====Envoi de l'e-mail.
                    try {
                        mail($mail, $sujetMail, $message_html, $entete);
                        
                        //on ecrit un message pour signaler au client que la génération est ok
                        $msgErr = '<div class="success">La génération de votre nouveau mot de passe vient de vous être envoyé par mail.</div>';
                    } catch (Exception $e) {
                        $msgErr = '<div class="error"><p>Le site rencontre un soucis et nous ne pouvons vous envoyer l\'email contenant votre nouveau mot de passe.</p>
                                    <p>Si le problème persite, merci de nous le signaler.</p></div>';
                        $messageErrMail .= $e->getMessage();
                        error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
                    }
                } else {
                    $msgErr = '<div class="warning">Votre mail n\'est pas correct.</div>';
                }
            } else {
                switch ($enregistrement->membre_banni) {
                    case 1:
                        $msgErr = '<div class="error"><p>Votre compte n\'est pas validé.</p>
                                    <p>Veuillez regarder dans vos mails pour cliquer sur le lien de validation.</p></div>';
                        break;
                    case 2:
                        $msgErr = '<div class="error"><p>Votre compte est bloqué par un administrateur.</p>
                                    <p>Si vous ne comprenez pas pourquoi votre compte est bloqué, contactez nous.</p></div>';
                        break;
                    case 3:
                        $msgErr = '<div class="error"><p>Votre compte n\'a pas été validé dans les temps.</p>
                                    <p>Contactez nous si vous souhaitez à présent valider votre compte.</p></div>';
                        break;
                    default:
                        $msgErr = '<div class="error"><p>Il existe un soucis sur votre compte</p>
                                    <p>Notre équipe technique vient d\'en être informé. Une fois le soucis résolu, nous vous contacterons pour plus d\'informations.</p>
                                    <p>Nous vous remercions pour la confiance que vous nous apportez.</p></div>';
                        $messageErrMail .='Attention champs banni incohérent sur le membre : ' . $enregistrement->membre_id . '<br/>';
                        error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
                        break;
                }
            }
        } else {
            $msgErr = '<div class="error">Le pseudo "<em>' . $pseudo . '</em>" n\'est pas connu sur ' . $nomSite . '</div>';
            //si on trouve plus d'un pseudo on envoie un mail à l'admin pour le prévenir de se doublon théoriquement imposible
            if ($countSelect > 1) {
                $messageErrMail .='Attention doublon sur un pseudo : ' . $pseudo . '<br/>';
                error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
            }
        }
    } else {
        $msgErr = '<div class="warning">Merci de renseigner votre pseudo ET votre email valide, saisie lors de l\'inscription.</div>';
    }
}
header('Content-type: text/html; charset=utf-8');

$titre = 'Oublei de mot de passe';
include('includes/haut.php'); //contient le doctype, et head.
?>
<div id="colonne_gauche">
<?php
include('includes/colg.php');
?>
</div>

<div id="contenu">
    <div id="map">
        <a href="index.php">Accueil</a> / Oublie password</a>
    </div>

    <h1>Oublie de votre mot de passe</h1>
<?php
echo $msgErr;
?>
    <form name="connexion" id="connexion" method="post" action="oublie-pass.php">
        <fieldset><legend>Connexion</legend>
            <label for="pseudo" class="float">Pseudo :</label> <input type="text" name="pseudo" id="pseudo" value="<?php if (isset($_SESSION['connexion_pseudo'])) echo $_SESSION['connexion_pseudo']; ?>"/><br/>
            <label for="mail" class="float">E-mail :</label> <input type="text" name="mail" id="mail"/><br/>
            <div class="center"><input type="submit" value="Générer un nouveau password" name="envoyer"/></div>
            <p><a href="inscription.php">Je ne suis pas inscrit.</a></p>
        </fieldset>
    </form>

</div>

<?php
include('includes/bas.php');
?>